Docker ব্যবহার করে মডেল ডেপ্লয়মেন্ট

Machine Learning - সাইকিট-লার্ন (Scikit-Learn) - Model Deployment এবং Production
186

Docker হল একটি শক্তিশালী টুল যা অ্যাপ্লিকেশন এবং তার নির্ভরশীলতা প্যাকেজিং করে একটি কন্টেইনারে রান করতে সহায়ক। এটি বিশেষভাবে মডেল ডেপ্লয়মেন্টের জন্য গুরুত্বপূর্ণ, কারণ এটি পরিবেশের মধ্যে কোনো পার্থক্য ছাড়াই অ্যাপ্লিকেশন চলতে সাহায্য করে। Docker ব্যবহারের মাধ্যমে আপনি আপনার মডেল এবং তার নির্ভরশীলতাগুলি একটি পোর্টেবল কন্টেইনারে প্যাকেজ করতে পারেন, যা যেকোনো প্ল্যাটফর্মে রান করা সম্ভব।

এখানে Flask বা FastAPI এর মাধ্যমে তৈরি করা একটি REST API ব্যবহার করে মডেল ডেপ্লয়মেন্ট এর জন্য Docker কিভাবে ব্যবহার করা যায়, সে সম্পর্কে একটি বিস্তারিত গাইড দেওয়া হলো।

ধাপ ১: মডেল তৈরি করা (Flask/FastAPI সহ)

ধরা যাক, আপনি একটি Flask বা FastAPI অ্যাপ্লিকেশন তৈরি করেছেন যা একটি মেশিন লার্নিং মডেলকে সার্ভ করছে। প্রথমে Flask দিয়ে একটি সরল API তৈরি করি।

Flask API Example:

from flask import Flask, request, jsonify
import pickle
import numpy as np

# Flask অ্যাপ্লিকেশন তৈরি
app = Flask(__name__)

# মডেল লোড করা
model = pickle.load(open('model.pkl', 'rb'))

@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json()  # ইনপুট ডেটা নেয়
    features = np.array(data['features']).reshape(1, -1)  # ফিচারগুলিকে উপযুক্ত আকারে রূপান্তর করা
    prediction = model.predict(features)  # মডেল থেকে পূর্বাভাস নেওয়া
    return jsonify({'prediction': prediction[0]})

if __name__ == "__main__":
    app.run(debug=True)

এই Flask অ্যাপ্লিকেশনটি একটি POST রিকোয়েস্টের মাধ্যমে মডেলের পূর্বাভাস প্রদান করবে।


ধাপ ২: Dockerfile তৈরি করা

Dockerfile হল একটি স্ক্রিপ্ট যা Docker ইমেজ তৈরি করতে ব্যবহৃত হয়। এই ফাইলটিতে আপনার অ্যাপ্লিকেশন চলানোর জন্য যা যা দরকার তা উল্লেখ থাকে, যেমন Python ইনস্টলেশন, নির্ভরশীল প্যাকেজ ইত্যাদি।

Dockerfile Example:

# Python ইমেজ থেকে শুরু করা
FROM python:3.8-slim

# অ্যাপ্লিকেশন ডিরেক্টরি তৈরি করা
WORKDIR /app

# আপনার অ্যাপ্লিকেশন ফাইল কপি করা
COPY . .

# প্রয়োজনীয় প্যাকেজ ইনস্টল করা
RUN pip install --no-cache-dir -r requirements.txt

# পোর্ট এক্সপোজ করা (যেখানে Flask চলবে)
EXPOSE 5000

# অ্যাপ্লিকেশন চালানো
CMD ["python", "app.py"]

এখানে:

  • FROM python:3.8-slim: এটি Python 3.8 এর একটি হালকা সংস্করণ ইমেজ থেকে শুরু হবে।
  • WORKDIR /app: /app নামক ডিরেক্টরিতে কাজ করা হবে।
  • COPY . .: বর্তমান ডিরেক্টরির সকল ফাইল Docker কন্টেইনারে কপি করা হবে।
  • RUN pip install: requirements.txt ফাইল থেকে প্রয়োজনীয় প্যাকেজ ইনস্টল করা হবে।
  • EXPOSE 5000: Flask অ্যাপ্লিকেশন 5000 পোর্টে চলবে, সুতরাং সেই পোর্ট এক্সপোজ করা হবে।
  • CMD ["python", "app.py"]: অ্যাপ্লিকেশন চালানোর জন্য এই কমান্ডটি ব্যবহার করা হবে।

ধাপ ৩: requirements.txt তৈরি করা

এটি একটি টেক্সট ফাইল যাতে আপনার অ্যাপ্লিকেশন চলানোর জন্য প্রয়োজনীয় সকল প্যাকেজের নাম থাকে।

flask
numpy
scikit-learn
pandas

এখানে আমরা Flask এবং কিছু অন্যান্য প্রয়োজনীয় প্যাকেজ উল্লেখ করেছি, যেমন numpy, scikit-learn, এবং pandas


ধাপ ৪: Docker ইমেজ তৈরি করা

এখন আপনি আপনার Dockerfile এবং কোডের ফোল্ডার থেকে Docker ইমেজ তৈরি করতে পারবেন। সেই জন্য নিচের কমান্ডটি রান করুন:

docker build -t my-model-api .

এই কমান্ডটি আপনার কোড এবং Dockerfile এর ভিত্তিতে একটি Docker ইমেজ তৈরি করবে, যার নাম my-model-api


ধাপ ৫: Docker কন্টেইনার চালানো

ইমেজটি তৈরি হওয়ার পর, আপনাকে কন্টেইনার চালাতে হবে। নিচের কমান্ডটি ব্যবহার করুন:

docker run -p 5000:5000 my-model-api

এটি আপনার Docker কন্টেইনারটি চালাবে এবং Flask অ্যাপ্লিকেশনটি 5000 পোর্টে উপলব্ধ করবে।


ধাপ ৬: কন্টেইনারে মডেল টেস্ট করা

এখন আপনি আপনার API টেস্ট করতে পারবেন। নিচের কোডটি ব্যবহার করে আপনি POST রিকোয়েস্ট পাঠাতে পারেন:

import requests

data = {'features': [5.1, 3.5, 1.4, 0.2]}  # কিছু উদাহরণ ফিচার
response = requests.post('http://localhost:5000/predict', json=data)
print(response.json())

এটি আপনার Flask API-তে POST রিকোয়েস্ট পাঠাবে এবং পূর্বাভাস প্রদান করবে।


ধাপ ৭: Docker Hub এ ইমেজ আপলোড করা (Optional)

যদি আপনি আপনার Docker ইমেজ শেয়ার করতে চান, তবে Docker Hub এ ইমেজ আপলোড করতে পারেন। প্রথমে, আপনাকে Docker Hub এ লগইন করতে হবে:

docker login

তারপর, আপনার ইমেজটি ট্যাগ করুন:

docker tag my-model-api username/my-model-api:latest

এবং পরে এটি Docker Hub এ আপলোড করুন:

docker push username/my-model-api:latest

সারাংশ:

  • Docker ব্যবহার করে মডেল ডেপ্লয়মেন্ট একটি শক্তিশালী পদ্ধতি, যা মডেল এবং তার নির্ভরশীলতাগুলি একটি কন্টেইনার তে প্যাকেজ করতে সাহায্য করে, যা যেকোনো পরিবেশে রান করা সম্ভব।
  • আপনি Flask বা FastAPI ব্যবহার করে একটি REST API তৈরি করে মডেল সার্ভ করতে পারেন এবং তারপর সেই API কে Docker কন্টেইনারে ডেপ্লয় করতে পারেন।
  • Docker ব্যবহারের মাধ্যমে আপনি একবার তৈরি করা মডেলটি বিভিন্ন পরিবেশে সহজে ডেপ্লয় করতে পারবেন, যা উন্নত স্কেলেবিলিটি এবং পোর্টেবিলিটি প্রদান করে।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...